﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Clientes.Model.Parameter
{
    public class Cliente : BaseModel
    {
        #region Membros
        private System.Int32? _codigo;
        private System.Int32 _digitoVerificador;
        private System.String _apelido;
        private System.String _nome;
        private System.String _complementoNome;
        private System.Int32? _clienteContaInvestimento;
        private System.Int64? _cPFCNPJ;
        private System.String _cPFCNPJTexto;
        private System.DateTime _dataNascimentoFundacao;
        private System.String _dependencia;
        private System.String _codigoOperacionalCVM;
        private System.Boolean _isClienteQualificado;
        private System.String _origem;
        private System.String _assessor;
        private System.Decimal? _limitesOperacionais;
        private System.Int32? _clienteBroker;        
        private System.Boolean _isPessoaVinculada;
        private System.String _tipoBloqueio;
        private System.String _descricaoBloqueio;
        private System.Boolean _isBloqueado;
        private System.Int32? _codigoCarteira;        
        private System.Decimal? _percentualReducaoAcrescimo;
        private System.Int32? _codigoClienteInstitucional;
        private System.Decimal? _percentualTotal;
        private System.Boolean _isOperacaoCarteiraCliente;
        private System.Boolean _tipoFaxDefault;
        private System.Boolean _isClienteBroker;
        private System.Int32? _digitoClienteContaInvestimento;
        private System.Int32? _clienteContaDeposito;
        private System.Int32? _digitoClienteContaDeposito;
        private System.Boolean _isContaInvestimento;
        private String _nomeResumido;

        private Model.InformacoesClienteBanco _bancoDividendo; //DadosBancariosResponse
        private Model.InformacoesClienteBanco _bancoContaCorrente; //DadosBancariosResponse
        private Model.InformacoesClienteTelefone _telefone; //TelefoneResponse
        private Model.InformacoesClienteEndereco _endereco; // EnderecoResponse
        private Model.PosicaoContasCorrente _posicaoContasCorrente; //PosicaoContasCorrenteResponse
        private Model.PosicaoCustodia _posicaoCustodia; //PosicaoCustodiaResponse
        private Model.Enum.TipoTransmissaoOrdem? _transmissaoOrdem;
        private Model.Enum.TipoSituacaoCliente? _situacao;
        private Model.Enum.TipoLiquidacao? _tipoLiquidacao;

        #endregion
        #region Propriedades
        public System.Int32? Codigo
        {
            get { return _codigo; }
            set { _codigo = value; this.OnPropertyChanged("Codigo"); }
        }
        public System.Int32 DigitoVerificador
        {
            get { return _digitoVerificador; }
            set { _digitoVerificador = value; this.OnPropertyChanged("DigitoVerificador"); }
        }
        public System.String Apelido
        {
            get { return _apelido; }
            set { _apelido = value; this.OnPropertyChanged("Apelido"); }
        }
        public System.String Nome
        {
            get { return _nome; }
            set { _nome = value; this.OnPropertyChanged("Nome"); }
        }
        public System.String ComplementoNome
        {
            get { return _complementoNome; }
            set { _complementoNome = value; this.OnPropertyChanged("ComplementoNome"); }
        }
        public System.Int32? ClienteContaInvestimento
        {
            get { return _clienteContaInvestimento; }
            set { _clienteContaInvestimento = value; this.OnPropertyChanged("ClienteContaInvestimento"); }
        }
        public System.Int64? CPFCNPJ
        {
            get { return _cPFCNPJ; }
            set { _cPFCNPJ = value; this.OnPropertyChanged("CPFCNPJ"); }
        }
        public System.String CPFCNPJTexto
        {
            get { return _cPFCNPJTexto; }
            set { _cPFCNPJTexto = value; this.OnPropertyChanged("CPFCNPJTexto"); }
        }
        public System.DateTime DataNascimentoFundacao
        {
            get { return _dataNascimentoFundacao; }
            set { _dataNascimentoFundacao = value; this.OnPropertyChanged("DataNascimentoFundacao"); }
        }
        public System.String Dependencia
        {
            get { return _dependencia; }
            set { _dependencia = value; this.OnPropertyChanged("Dependencia"); }
        }
        public System.String CodigoOperacionalCVM
        {
            get { return _codigoOperacionalCVM; }
            set { _codigoOperacionalCVM = value; this.OnPropertyChanged("CodigoOperacionalCVM"); }
        }
        public System.Boolean isClienteQualificado
        {
            get { return _isClienteQualificado; }
            set { _isClienteQualificado = value; this.OnPropertyChanged("isClienteQualificado"); }
        }
        public System.String Origem
        {
            get { return _origem; }
            set { _origem = value; this.OnPropertyChanged("Origem"); }
        }
        public System.String Assessor
        {
            get { return _assessor; }
            set { _assessor = value; this.OnPropertyChanged("Assessor"); }
        }
        public Model.InformacoesClienteBanco BancoDividendo
        {
            get { return _bancoDividendo; }
            set { _bancoDividendo = value; this.OnPropertyChanged("BancoDividendo"); }
        }
        public Model.InformacoesClienteBanco BancoContaCorrente
        {
            get { return _bancoContaCorrente; }
            set { _bancoContaCorrente = value; this.OnPropertyChanged("BancoContaCorrente"); }
        }
        public Model.InformacoesClienteTelefone Telefone
        {
            get { return _telefone; }
            set { _telefone = value; this.OnPropertyChanged("Telefone"); }
        }
        public System.Decimal? LimitesOperacionais
        {
            get { return _limitesOperacionais; }
            set { _limitesOperacionais = value; this.OnPropertyChanged("LimitesOperacionais"); }
        }
        public Model.Enum.TipoTransmissaoOrdem? TransmissaoOrdem
        {
            get { return _transmissaoOrdem; }
            set { _transmissaoOrdem = value; this.OnPropertyChanged("TransmissaoOrdem"); }
        }
        public Model.InformacoesClienteEndereco Endereco
        {
            get { return _endereco; }
            set { _endereco = value; this.OnPropertyChanged("Endereco"); }
        }
        public Model.PosicaoContasCorrente PosicaoContasCorrente
        {
            get { return _posicaoContasCorrente; }
            set { _posicaoContasCorrente = value; this.OnPropertyChanged("PosicaoContasCorrente"); }
        }
        public Model.PosicaoCustodia PosicaoCustodia
        {
            get { return _posicaoCustodia; }
            set { _posicaoCustodia = value; this.OnPropertyChanged("PosicaoCustodia"); }
        }
        public System.Int32? ClienteBroker
        {
            get { return _clienteBroker; }
            set { _clienteBroker = value; this.OnPropertyChanged("ClienteBroker"); }
        }
        public Model.Enum.TipoSituacaoCliente? Situacao
        {
            get { return _situacao; }
            set { _situacao = value; this.OnPropertyChanged("Situacao"); }
        }
        public System.Boolean isPessoaVinculada
        {
            get { return _isPessoaVinculada; }
            set { _isPessoaVinculada = value; this.OnPropertyChanged("isPessoaVinculada"); }
        }
        public System.String TipoBloqueio
        {
            get { return _tipoBloqueio; }
            set { _tipoBloqueio = value; this.OnPropertyChanged("TipoBloqueio"); }
        }
        public System.String DescricaoBloqueio
        {
            get { return _descricaoBloqueio; }
            set { _descricaoBloqueio = value; this.OnPropertyChanged("DescricaoBloqueio"); }
        }
        public System.Boolean isBloqueado
        {
            get { return _isBloqueado; }
            set { _isBloqueado = value; this.OnPropertyChanged("isBloqueado"); }
        }
        public System.Int32? CodigoCarteira
        {
            get { return _codigoCarteira; }
            set { _codigoCarteira = value; this.OnPropertyChanged("CodigoCarteira"); }
        }
        public Model.Enum.TipoLiquidacao? TipoLiquidacao
        {
            get { return _tipoLiquidacao; }
            set { _tipoLiquidacao = value; this.OnPropertyChanged("TipoLiquidacao"); }
        }
        public System.Decimal? PercentualReducaoAcrescimo
        {
            get { return _percentualReducaoAcrescimo; }
            set { _percentualReducaoAcrescimo = value; this.OnPropertyChanged("PercentualReducaoAcrescimo"); }
        }
        public System.Int32? CodigoClienteInstitucional
        {
            get { return _codigoClienteInstitucional; }
            set { _codigoClienteInstitucional = value; this.OnPropertyChanged("CodigoClienteInstitucional"); }
        }
        public System.Decimal? PercentualTotal
        {
            get { return _percentualTotal; }
            set { _percentualTotal = value; this.OnPropertyChanged("PercentualTotal"); }
        }
        public System.Boolean isOperacaoCarteiraCliente
        {
            get { return _isOperacaoCarteiraCliente; }
            set { _isOperacaoCarteiraCliente = value; this.OnPropertyChanged("isOperacaoCarteiraCliente"); }
        }
        public System.Boolean TipoFaxDefault
        {
            get { return _tipoFaxDefault; }
            set { _tipoFaxDefault = value; this.OnPropertyChanged("TipoFaxDefault"); }
        }
        public System.Boolean isClienteBroker
        {
            get { return _isClienteBroker; }
            set { _isClienteBroker = value; this.OnPropertyChanged("isClienteBroker"); }
        }
        public System.Int32? DigitoClienteContaInvestimento
        {
            get { return _digitoClienteContaInvestimento; }
            set { _digitoClienteContaInvestimento = value; this.OnPropertyChanged("DigitoClienteContaInvestimento"); }
        }
        public System.Int32? ClienteContaDeposito
        {
            get { return _clienteContaDeposito; }
            set { _clienteContaDeposito = value; this.OnPropertyChanged("ClienteContaDeposito"); }
        }
        public System.Int32? DigitoClienteContaDeposito
        {
            get { return _digitoClienteContaDeposito; }
            set { _digitoClienteContaDeposito = value; this.OnPropertyChanged("DigitoClienteContaDeposito"); }
        }
        public System.Boolean IsContaInvestimento
        {
            get { return _isContaInvestimento; }
            set { _isContaInvestimento = value; this.OnPropertyChanged("IsContaInvestimento"); }
        }

        public String NomeResumido
        {
           get { return _nomeResumido; }
           set { _nomeResumido = value;
           base.SetValue<String>("_nomeResumido", ref _nomeResumido, value);
           }
        }

        #endregion

    }
}
